package com.haixiaoke.saas.lock.mapper;


import com.haixiaoke.saas.lock.domain.HouseLock;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 房间锁信息Mapper接口
 *
 * @author qixi
 * @date 2024-07-25
 */
public interface HouseLockMapper {
    /**
     * 查询房间锁信息
     *
     * @param lockId 房间锁信息主键
     * @return 房间锁信息
     */
    HouseLock selectHouseLockByLockId(Long lockId);

    /**
     * 查询房间锁信息列表
     *
     * @param houseLock 房间锁信息
     * @return 房间锁信息集合
     */
    List<HouseLock> selectHouseLockList(HouseLock houseLock);

    /**
     * 查询房间锁信息列表和租户状态
     *
     * @param houseLock
     * @return
     */
    List<HouseLock> selectHouseLockListAndTenantState(HouseLock houseLock);

    /**
     * 新增房间锁信息
     *
     * @param houseLock 房间锁信息
     * @return 结果
     */
    int insertHouseLock(HouseLock houseLock);

    /**
     * 修改房间锁信息
     *
     * @param houseLock 房间锁信息
     * @return 结果
     */
    int updateHouseLock(HouseLock houseLock);

    /**
     * 删除房间锁信息
     *
     * @param lockId 房间锁信息主键
     * @return 结果
     */
    int deleteHouseLockByLockId(Long lockId);

    /**
     * 批量删除房间锁信息
     *
     * @param lockIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteHouseLockByLockIds(Long[] lockIds);

    HouseLock selectHouseLockByMac(@Param("mac") String mac, @Param("tenantId") String tenantId);

    HouseLock selectHouseLockByLockName(@Param("lockName") String lockName, @Param("tenantId") String tenantId);

    /**
     * 根据房间ID和锁状态查询房间锁信息
     *
     * @param houseId
     * @param lockState
     * @return
     */
    List<HouseLock> selectHouseLockByHouseIdAndLockState(@Param("houseId") String houseId, @Param("lockState") String lockState);

    /**
     * 根据房间ID和锁状态修改房间锁信息
     *
     * @param houseId
     * @return
     */
    int updateHouseLockState(String houseId);

    /**
     * 根据房间ID查询房间锁信息
     *
     * @param houseId
     * @return
     */
    List<HouseLock> selectHouseLockByHouseId(String houseId);

}
